1. Field of the Invention
The present invention relates to message communication devices for carrying out message communication among plurality of processes.
2. Description of the Related Art
A construction for carrying out message communications between processes on multi-process operating systems has been known in the prior art, as disclosed in JP H09-101901A for example. Also known have been various constitutions for client-servers which transmit/receive messages between plurality of clients and a server. In those constitutions, the number of message transmission/reception increases dramatically, as the number of client processes increases Especially, the process load on a server process increases severely, since the server process is required to return messages after completing required processing of the messages received from all the client processes.
The performance of the devices used in such constitution is often evaluated by shortening of turnaround times; i.e., the times required by returning results after requirements have been made by messages. Therefore, the increase in process load will affect the performance of the devices directly. In other words, since messages sent to a server process are processed one by one in chronological order of their receptions, processing of messages have to wait in the server process when the server is processing other messages even if client processes send messages. As a result, the responses from the server process are delayed in view of the client process so as to degrade the performance of the devices.
As example of application using communications between processes according to client server methods, for example, there is X window system. Further, also known has been technology for the Low Bandwidth X extension (LBX) as a functional extension of the X window system.
In the LBX, messages from client processes are received using a proxy process (LBX proxy), the plurality of messages is optimized, the optimized LBX messages are transmitted to a server process and picture drawing process is requested after converting the messages into LBX messages. The LBX proxy also has a local cache function and stores the results of message transmissions/receptions between client processes and a server process via LBX proxy in the local cache. And then, the LBX proxy returns the message directly to the client process based on the contents stored in the cache without passing through the server when the same processing is requested again from a client process and an it is judged to be unnecessary to send it to the server.
In the LBX, the number of times of the message transmission/reception between clients and a server can be reduced through executing the message transmission/reception between client process and server process via the LBX proxy. Consequently, the processing load on the server process is reduced, and the turnaround time leading up to return of the processing result, is improved in view of the client process. Incidentally, a proxy is a server or a program that relays accesses to web pages and the like, and is used to reduce traffics on networks in access to the identical web pages.
However, the amount of communication between proxy processes and a server process increases in method adding proxy processes (e.g., Low Bandwidth X extension) and the overall amount of the message transmission/reception increases. At the same time, the amount of signal processing in a whole device increases due to the increased amount of signal processing by the proxy process. Especially, in cases where all of the client process, proxy process and server process run on a same processor, the total amount of signal processing in the device even increases compared to the cases where the proxy process is not added. Increased amount of signal processing in a device leads to reduction in the CPU time allocated to the server process and client processes, which delays return of the processing results from the server process.
Because of the reasons described above, it is necessary to take a means for caching messages that are transmitted/received between client processes and a sever process without using a proxy process.